from typing import final

@final
class Eq:
    def __eq__(self, /, other: Eq) -> bool: ...
    def __ne__(self, /, other: Eq) -> bool: ...
    def __new__(cls, /, value: int) -> Eq: ...

@final
class EqDefaultNe:
    def __eq__(self, /, other: EqDefaultNe) -> bool: ...
    def __new__(cls, /, value: int) -> EqDefaultNe: ...

@final
class EqDerived:
    def __eq__(self, /, other: EqDerived) -> bool: ...
    def __ne__(self, /, other: EqDerived) -> bool: ...
    def __new__(cls, /, value: int) -> EqDerived: ...

@final
class Ordered:
    def __eq__(self, /, other: Ordered) -> bool: ...
    def __ge__(self, /, other: Ordered) -> bool: ...
    def __gt__(self, /, other: Ordered) -> bool: ...
    def __le__(self, /, other: Ordered) -> bool: ...
    def __lt__(self, /, other: Ordered) -> bool: ...
    def __ne__(self, /, other: Ordered) -> bool: ...
    def __new__(cls, /, value: int) -> Ordered: ...

@final
class OrderedDefaultNe:
    def __eq__(self, /, other: OrderedDefaultNe) -> bool: ...
    def __ge__(self, /, other: OrderedDefaultNe) -> bool: ...
    def __gt__(self, /, other: OrderedDefaultNe) -> bool: ...
    def __le__(self, /, other: OrderedDefaultNe) -> bool: ...
    def __lt__(self, /, other: OrderedDefaultNe) -> bool: ...
    def __new__(cls, /, value: int) -> OrderedDefaultNe: ...

@final
class OrderedDerived:
    def __eq__(self, /, other: OrderedDerived) -> bool: ...
    def __ge__(self, /, other: OrderedDerived) -> bool: ...
    def __gt__(self, /, other: OrderedDerived) -> bool: ...
    def __hash__(self, /) -> int: ...
    def __le__(self, /, other: OrderedDerived) -> bool: ...
    def __lt__(self, /, other: OrderedDerived) -> bool: ...
    def __ne__(self, /, other: OrderedDerived) -> bool: ...
    def __new__(cls, /, value: int) -> OrderedDerived: ...
    def __str__(self, /) -> str: ...

@final
class OrderedRichCmp:
    def __eq__(self, /, other: OrderedRichCmp) -> bool: ...
    def __ge__(self, /, other: OrderedRichCmp) -> bool: ...
    def __gt__(self, /, other: OrderedRichCmp) -> bool: ...
    def __le__(self, /, other: OrderedRichCmp) -> bool: ...
    def __lt__(self, /, other: OrderedRichCmp) -> bool: ...
    def __ne__(self, /, other: OrderedRichCmp) -> bool: ...
    def __new__(cls, /, value: int) -> OrderedRichCmp: ...
